#include <iostream>
#include <algorithm>
#include <stack>
#include <vector>
using namespace std;

#define int long long
#define ll long long
const long long INF = (1ll << 30);

int n, a[200005];
int pre[200005], suf[200005];
void solve() {
	cin >> n;
	int tmp = 1;
	vector<int> z;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		tmp *= a[i];
		if (a[i] = -1)
			z.push_back(i);
	}
	if (tmp == 1) {
		cout << "Alice\n";
		return;
	}
	if (a[1] == -1 || a[n] == -1 || n % 2 == 0) {
		cout << "Alice\n";
		return;
	}
	pre[0] = suf[n + 1] = 0;
	for (int i = 1; i <= n; i++) {
		if (a[i] == 1)
			pre[i] = pre[i - 1] + 1;
		if(a[n - i + 1]==1)
			suf[n - i + 1] = suf[n - i + 2] * a[n - i + 1];
	}
	bool b = false;
	for (int i = 0; i < z.size(); i+=2) {
		
	}


}

signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while(t--)
		solve();
	return 0;
}
//int n, x;
//int dfs(int a, int b) {
//	if (a < b)swap(a, b);
//	int res = 0;
//	if (a % b == 0)res = (a / b * 2 - 1) * b;
//	else {
//		res = (a / b * 2) * b;
//		res += dfs(a % b, b);
//	}
//	return res;
//}
//
//void solve() {
//	cin >> n >> x;
//	int tmp = dfs(x, n - x);
//	cout << tmp + n << '\n';
//}

//int n, a[300005], b[300005], f[300005];
//int len = 0;
//struct  node
//{
//	int a, b;
//}c[300005];
//
//bool cmp(node& x, node& y) {
//	return x.a < y.a;
//}
//void solve() {
//	cin >> n;
//	for (int i = 1; i <= n; i++) {
//		cin >> a[i];
//		f[i] = 1e18;
//	}
//	for (int i = 1; i <= n; i++) {
//		cin >> b[i];
//		c[i] = { a[i],b[i] };
//	}
//	sort(c + 1, c + 1 + n, cmp);
//	int len = 0;
//	for (int i = 1; i <= n; i++) {
//		if (c[i].b > f[len])f[++len] = c[i].b;
//		else {
//			int index = lower_bound(f + 1, f + 1 + n, c[i].b) - f;
//			f[index] = min(f[index], c[i].b);
//		}
//	}
//	cout << n + len << '\n';
//}



//int n, m, s;
//int a[100005];
//bool vis[100005];
//void solve() {
//	cin >> n >> m >> s;
//	for (int i = 1; i <= m; i++) {
//		cin >> a[i];
//	}
//	a[m + 1] = n;
//	int cur = 0;
//	vector<int> ans;
//	for (int i = 1; i <= m + 1; i++) {
//		if (a[i] - a[cur] < s)continue;
//		ans.push_back(i);
//		vis[i] = 1;
//		cur = i;
//	}
//	if (cur != m + 1) {
//		cout << "NO\n";
//		return;
//	}
//	for (int i = m; i >= 0; i--) {
//		if (!vis[i]) {
//			if (a[cur] - a[i] < s) {
//				cout << "NO\n";
//				return;
//			}
//			else {
//				ans.push_back(i);
//				vis[i] = 1;
//				cur = i;
//			}
//		}
//	}
//	cout << "YES\n";
//	for (auto x : ans) {
//		cout << x << ' ';
//	}
//	cout << '\n';
//}

//int n;
//int a[200005];
//int dp[200005];
//int ans = 0;
//void solve() {
//	cin >> n;
//	for (int i = 1; i <= n; i++) {
//		cin >> a[i];
//	}
//	stack<int> st;
//	for (int i = 1; i <= n; i++) {
//		while (!st.empty() && a[st.top()] > a[i]) {
//			st.pop();
//		}
//		int pre = st.empty() ? 0 : st.top();
//		st.push(i);
//
//		int len = i - pre;
//		dp[i] = dp[pre] + len * a[i];
//	}
//	for (int i = 1; i <= n; i++) {
//		ans += dp[i];
//	}
//	cout << ans << '\n';
//}

//const long long M = 500005;
//struct  edge
//{
//	int u, v, w;
//	friend bool operator<(const edge& a, const edge& b) {
//		return a.w < b.w;
//	}
//}e[M]; int cnt;
//
//int f[M], val[M], pre[M];
//int find(int x) {
//	return x == f[x] ? x : f[x] = find(f[x]);
//}
//
//bool uni(int x, int y,int k) {
//	int fx = find(x), fy = find(y);
//	if (fx != fy) {
//		if (val[fx] < val[fy])swap(fx, fy);
//		pre[fx] = k, f[fx] = fy; return true;
//	}
//	return false;
//}
//
//int tmp[M];
//int n, m, s, k;
//signed main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	cin >> n >> m >> s >> k;
//	for (int i = 1; i <= n; i++) {
//		if (i != s) {
//			f[i] = i;
//			val[i] = INF;
//		}
//	}
//	for (int i = 1, u, v, w; i <= m; i++) {
//		cin >> u >> v >> w;
//		if (u == s)val[v] = min(val[v], w);
//		else if (v == s)val[u] = min(val[u], w);
//		else e[++cnt] = { u,v,w };
//	}
//
//	ll ans = 0; sort(e + 1, e + 1 + cnt);
//	for (int i = 1; i <= cnt; i++) {
//		if (uni(e[i].u, e[i].v, e[i].w)) {
//			ans += e[i].w;
//		}
//	}
//	int p = 0;
//	for (int i = 1; i <= n; i++) {
//		if (i != s && find(i) == i) {
//			if (val[i] == INF) {
//				cout << "Impossible\n";
//				return 0;
//			}
//			p++, ans += val[i], val[i] = INF;
//		}
//	}
//	if (p > k) {
//		cout << "Impossible\n";
//		return 0;
//	}
//	int tot = 0;
//	for (int i = 1; i <= n; i++) {
//		if (i != s && val[i] != INF) tmp[++tot] = val[i] - pre[i];
//	}
//	if (p + tot < k) {
//		cout << "Impossible\n";
//		return 0;
//	}
//	sort(tmp + 1, tmp + tot + 1);
//	for (int i = 1; i <= k - p; i++)ans += tmp[i];
//	cout << ans << '\n';
//
//
//	return 0;
//}